package com.maixy.dailydemo.bloom;

import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

/**
 * @ClassName BloomService
 * @Description TODO
 * @Date 2021/7/19 21:27
 * @Author maixy
 */
@Service
@Slf4j
//排除使用不稳定API的警告
@SuppressWarnings("UnstableApiUsage")
public class BloomService {
    public static BloomFilter<Integer> filter;
    @PostConstruct
    public void init() {
        log.info("开始----->id加载布隆过滤器");
        filter = BloomFilter.create(Funnels.integerFunnel(), 5000, 0.01);
        filter.put(1);
        filter.put(2);
        filter.put(3);
        filter.put(4);
        filter.put(5);
        filter.put(6);
        filter.put(7);
        filter.put(8);
        filter.put(9);
        filter.put(10);
        filter.put(11);
        filter.put(12);
        filter.put(13);
        filter.put(14);
        filter.put(15);
        log.info("结束----->id加载布隆过滤器");
    }

    public String registered(Integer id) {
        //布隆过滤器只能证明一个数据一定不存在，一定存在的判断存在误差
        if (filter.mightContain(id)) {
            return "这个昵称已经被注册，请使用别的昵称";
        } else {
            log.info("id[{}]一定不存在",id);
            log.info("正在注册。。。。。。");
            filter.put(id);
            log.info("注册结束，将已被注册的昵称添加进入布隆过滤器。。。。。。");
            return "注册成功";
        }
    }
}
